package com.jay.serializer;

import java.io.IOException;

/**
 * 序列化器接口
 * 定义了序列化和反序列化的基本方法
 */
public interface Serializer {

    /**
     * 序列化
     * 将对象转换为字节数组
     *
     * @param object 待序列化的对象
     * @param <T>    泛型参数，表示待序列化对象的类型
     * @return 序列化后的字节数组
     * @throws IOException 如果序列化过程中发生I/O错误
     */
    <T> byte[] serialize(T object) throws IOException;

    /**
     * 反序列化
     * 将字节数组转换为指定类型的对象
     *
     * @param bytes    待反序列化的字节数组
     * @param tClass   指定的类型类
     * @param <T>      泛型参数，表示反序列化后的对象类型
     * @return 反序列化后的对象
     * @throws IOException 如果反序列化过程中发生I/O错误
     */
    <T> T deserialize(byte[] bytes, Class<T> tClass) throws IOException;
}
